草庐IT

Angular 单元测试简介

全部标签

javascript - 如何防止 Angular 4中的页面刷新

我想在任何地方都阻止页面刷新。我试过下面的代码import{Component,OnInit}from'@angular/core';import{Router}from'@angular/router';import{CommonServices}from'../services/common.service';@Component({selector:'app-review-prescription',templateUrl:'./review-prescription.component.html',styleUrls:['../../assets/css/prescriptio

javascript - 带有 es5 的 Angular 5

Angular4支持以下语法varHelloComponent=ng.coreComponent({selector:'hello-cmp',template:'HelloWorld!',viewProviders:[Service].Class({constructor:[Service,function(service){},`});在Angular5中,缺少类,目前任何人都可以为Angular5提供ES5语法我无法切换ES6,所以请避免使用该建议。如果切换到ES6是唯一的方法,那么我现在将坚持使用Angular4 最佳答案 您

javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM

由于--experimental-modulesCLI开关(即node--experimental-modules),我的基于Node的项目是在Node上使用原生ES模块支持实现的.显然,当我使用Jasminenode--experimental-modules./node_modules/jasmine/bin/jasmine运行规范时,出现以下错误:Error[ERR_REQUIRE_ESM]:MustuseimporttoloadESModule是否可以在Node中通过ES模块使用Jasmine?如果不是,是否有任何替代方法不使用框架(例如,使用npm脚本运行测试)?

javascript - 使用 Jest 和 enzyme 进行 IndexedDB 测试 - ReferenceError : indexedDB is not defined

我正在为我的应用程序寻求单元测试方面的帮助,我正在使用indexedDB。在我实现indexedDB功能之前,测试是正确的。但是现在,对于所有这些,我都看到一个错误:ReferenceError:indexedDBisnotdefined有人可以给我建议如何消除该错误吗?我正在搜索信息,并尝试了不同的方法来模拟window或indexedDB,但没有结果。 最佳答案 这个问题是由于Dexie期望window.indexedDB被定义,当以没有真正的DOM或的headless模式(使用Jest)运行时,情况并非如此窗口范围。在Dexi

javascript - Angular AOT : ERROR in ng component html file : Expected 0 arguments, 但得到 1

最初我在发布angular.net核心SPA应用程序时遇到以下错误:Can'tresolverxjs/operatorsinrelease\directives我已经通过将rxjs版本更新到5.6解决了这个问题。现在在发布应用程序时出现以下错误:WARNINGinEnvironmentPlugin-NODE_ENVenvironmentvariableisundefined.Youcanpassanobjectwithdefaultvaluestosuppressthiswarning.Seehttps://webpack.js.org/plugins/environment-plug

javascript - 以 Angular 6 重试 HTTP 请求

我使用拦截器根据每个请求的HTTP响应在显示屏上显示错误消息。intercept(request:HttpRequest,next:HttpHandler):Observable>{constcustomReq=request.clone({//headers:request.headers.set('app-language','en')});returnnext.handle(customReq).pipe(tap((ev:HttpEvent)=>{if(evinstanceofHttpResponse){//processingrequest}}),catchError(resp

javascript - Angular Material 徽章 : Make MatBadge contain an icon instead of text?

使用angular/material6.2.1,我尝试向按钮添加徽章,效果很好。但是,我希望徽章显示Material图标,而不是显示我可以使用matBadge指令设置的纯文本。有谁知道我必须做什么才能实现这个目标?我想我可以使用jQuery,但我想知道是否有更流畅/更简单的方法。 最佳答案 我通过简单地设置f.e.解决了这个问题。按钮上的matBadge="person"。然后在你的css文件中:.mat-badge-content{font-family:'MaterialIcons';}

javascript - 在 Angular 中渲染基于时间的 Observables 而无需压倒性的变化检测

我们的Angular应用程序中有许多组件需要每秒定期显示每个组件唯一的新值(倒计时、时间戳、耗时等)。最自然的方法是创建使用RxJStimer和interval工厂函数的可观察对象。但是,这些会在整个应用程序的每个时间间隔触发Angular变化检测,调用时间间隔函数的次数。如果我们在页面上有几十个组件,这会触发整个应用程序每秒或每个时间段数十次的变化检测,从而产生很大的性能开销。到目前为止,我尝试了两种方法来解决这个问题。对任何一个的好的回答都会非常有帮助——最好是两者兼而有之。我想避免手动触发变更检测,而是依赖于Observables发出的新值,并让异步管道/OnPush变更检测策略

javascript - 如何构建异步函数的测试?

我习惯于使用标准的NodeJsassert库编写Mocha测试,如下所示:describe('Somemodule',()=>{varresult=someCall();it('Should',()=>{assert.ok(...);});})但现在我的电话返回了一个promise......所以我想写:describe('Somemodule',async()=>{varresult=awaitsomeCall();it('Should',()=>{assert.ok(...);});})但它不起作用。我的测试根本不运行。奇怪的是,describe('Somemodule',asyn

javascript - 如何在所有 api 响应之前以 Angular 7 在页面加载中显示加载指示器?

我在一个页面中有5个API调用。一些api需要20秒才能给出响应。有些需要30秒才能做出回应。有些需要10秒,所以当第一个api给出响应时,第一个api将加载指示器设置为false。然后加载指示器消失。但其他api仍在工作我想显示加载指示器,直到五个api调用响应。你能给我一些完成任务的想法吗?代码:组件.tsloading=true;ngInit(){this.api1();this.api2();this.api3();this.api4();this.api5();}api1(){this.loading=true;this.apiService.api1.subscribe(r